iT邦幫忙

2023 iThome 鐵人賽

DAY 25
0
Software Development

30天快速打造Python資料結構&演算法邏輯刷爆LeetCode系列 第 25

DAY 25 「雜湊表 Leetcode」面試考題的Python程式碼撰寫~

  • 分享至 

  • xImage
  •  
  • 有效的字母異位詞 (Valid Anagram) - 題號:242
    題目描述:給定兩個字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的字母異位詞。
def isAnagram(s, t):
    if len(s) != len(t):
        return False

    char_count = [0] * 26

    for char in s:
        char_count[ord(char) - ord('a')] += 1

    for char in t:
        char_count[ord(char) - ord('a')] -= 1
        if char_count[ord(char) - ord('a')] < 0:
            return False

    return True
  • 查找常用字符 (Find Common Characters) - 題號:1002
    題目描述:給定僅有小寫字母組成的字符串數組 A,返回列表中的每個字符串中都顯示的全部字符(包括重覆字符)組成的列表。
def commonChars(A):
    result = []
    min_freq = [float('inf')] * 26

    for word in A:
        freq = [0] * 26
        for char in word:
            freq[ord(char) - ord('a')] += 1
        for i in range(26):
            min_freq[i] = min(min_freq[i], freq[i])

    for i in range(26):
        result.extend([chr(i + ord('a'))] * min_freq[i])

    return result
  • 兩個數組的交集 (Intersection of Two Arrays) - 題號:349
    題目描述:給定兩個數組,編寫一個函數來計算它們的交集。
def intersection(nums1, nums2):
    set1 = set(nums1)
    set2 = set(nums2)
    return list(set1.intersection(set2))
  • 快樂數 (Happy Number) - 題號:202
    題目描述:編寫一個算法來判斷一個數 n 是不是快樂數。一個數是快樂的,如果按照如下方式得到的一系列數字中,最終結果為 1。
def isHappy(n):
    def get_next(n):
        total_sum = 0
        while n > 0:
            n, digit = divmod(n, 10)
            total_sum += digit ** 2
        return total_sum

    seen = set()
    while n != 1 and n not in seen:
        seen.add(n)
        n = get_next(n)

    return n == 1
  • 兩數之和 (Two Sum) - 題號:1
    題目描述:給定一個整數數組 nums 和一個目標值 target,在該數組中找出和為目標值的那 兩個 整數,並返回它們的數組下標。
def twoSum(nums, target):
    num_dict = {}
    for i, num in enumerate(nums):
        complement = target - num
        if complement in num_dict:
            return [num_dict[complement], i]
        num_dict[num] = i
    return None
  • 四數相加 II (4Sum II) - 題號:454
    題目描述:給定四個包含整數的數組列表 A, B, C, D ,計算有多少個元組 (i, j, k, l) 使得 A[i] + B[j] + C[k] + D[l] = 0。
def fourSumCount(A, B, C, D):
    sum_ab = {}
    for a in A:
        for b in B:
            sum_ab[a + b] = sum_ab.get(a + b, 0) + 1
    count = 0
    for c in C:
        for d in D:
            count += sum_ab.get(-(c + d), 0)
    return count
  • 贖金信 (Ransom Note) - 題號:383
    題目描述:給定一個贖金信 (ransom) 字符串和一個雜志(magazine)字符串,判斷第一個字符串ransom能不能由第二個字符串magazines里面的字符構成。
def canConstruct(ransomNote, magazine):
    from collections import Counter
    return not (Counter(ransomNote) - Counter(magazine))

上一篇
DAY 24 「串列 Leetcode」題目的Python程式碼撰寫~
下一篇
DAY 26 「字符串 Leetcode」面試考題的Python程式碼撰寫~
系列文
30天快速打造Python資料結構&演算法邏輯刷爆LeetCode30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言